home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / intrvews / xgrab.lha / xgrab / ui / GC / cons.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-25  |  706 b   |  30 lines

  1. /* Silly implementation of Lisp cons. Intentionally wastes lots of space */
  2. /* to test collector.                                                    */
  3. # include <stdio.h>
  4. # include "cons.h"
  5.  
  6. int extra_count = 0;        /* Amount of space wasted in cons node */
  7.  
  8. sexpr cons (x, y)
  9. sexpr x;
  10. sexpr y;
  11. {
  12.     register sexpr r;
  13.     register int i;
  14.     register int *p;
  15.     
  16.     extra_count++;
  17.     extra_count %= 3000;
  18.     r = (sexpr) gc_malloc(8 + extra_count);
  19.     for (p = (int *)r; ((char *)p) < ((char *)r) + extra_count + 8; p++) {
  20.     if (*p) {
  21.         fprintf(stderr, "Found nonzero at %X\n", p);
  22.         abort(p);
  23.         }
  24.         *p = 13;
  25.     }
  26.     r -> sexpr_car = x;
  27.     r -> sexpr_cdr = y;
  28.     return(r);
  29. }
  30.